Así
por ejemplo, el botón Aceptar que
comentamos antes podría tener en el formulario el
nombre cmdAceptar.
Controles básicos
Hay una serie de
propiedades que son comunes a la mayoría de los
controles. Son las siguientes:
Name: es
el nombre con el que se conocerá el control cuando lo
utilicemos en el código. En un mismo formulario no puede
haber 2 controles con el mismo nombre. Conviene poner un
nombre que represente la función que tiene el control en
la aplicación para que el código quede más claro.
Alignment: alineación
que tendrá el texto dentro del control: izquierda,
centro o derecha.
Appearance: aspecto
del control: 3D o plano.
BackColor: color
del fondo del control.
BorderStyle: es
el tipo de contorno para el control, el estilo del
borde.
Caption: Es
el texto que contendrá el control. Esta propiedad no
existe en el control TextBox.
Enabled: establece
si un control está habilitado para su modificación por
parte del usuario o no. Si un control no está
habilitado, es decir, tiene la propiedad Enabled establecida
en False, su
color aparece un poco difuminado para indicar que no se
puede utilizar ese control en ese momento. En la figura
anterior podemos ver un menú con una opción habilitada y
dos deshabilitadas.
Font: tipo
y tamaño de letra que usa el control.
ForeColor color
de la letra del control.
Heigth: altura
del control.
Left: distancia
entre el borde izquierdo de un objeto y el borde
izquierdo de su contenedor.
TabIndex: es
el orden que ocupa el control cuando se va pasando de
uno a otro mediante la tecla tabulador.
ToolTipText: Aquí
indicaremos el texto que se mostrará cuando el ratón se
sitúe sobre el control. Este texto puede servir de
aclaración o ayuda sobre la función de dicho control. En
la figura adjunta podemos ver el ToolTipText que aparece
al dejar el puntero del ratón sobre el botón Abrir.
Top: distancia
entre el borde superior de un objeto y el borde superior
de su contenedor.
Visible: Devuelve
o establece un valor que determina si el control es
visible. Por ejemplo para ocultar un control podemos
establecer el valor de esta propiedad a False.
Width: anchura
del control.
TextBox
Mediante este control
podremos realizar tanto la entrada como la salida de
datos en nuestras aplicaciones. Las propiedades de las
que dispone el control (además de las generales de todos
los controles) son las siguientes:
CausesValidation:
Esta propiedad sirve para indicar si queremos que al
abandonar el control se genere un evento Validate.
Desde el método correspondiente a dicho evento se deberá
comprobar el valor introducido en el TextBox,
permitiéndose así o no la salida. Esta propiedad podrá
tener el valor True o False.
MaxLength: número
de caracteres máximo que puede contener el texto
introducido en el TextBox. Cuando estamos introduciendo
texto y llegamos al máximo nos alerta con un pitido.
MultiLine: permite
que el control tenga varias líneas de edición. Esta
propiedad podrá tener el valor True o False.
Locked: Si
está con valor True bloquea
el control, es decir, el usuario no puede introducir ni
modificar el texto que contenga. Nos puede servir para
utilizar el control como salida de datos sin que el
usuario pueda modificarlos por error.
Text: Es
la propiedad equivalente a Caption en los demás
controles. Aquí indicamos el texto que aparecerá en el
control. Podemos asignarle cualquier texto en el momento
de diseñar el programa o durante la ejecución del mismo.
También podemos leer el texto que haya introducido el
usuario para tratarlo durante la ejecución del programa.
Label
Su utilidad queda
restringida a la visualización de datos en el programa,
no permitiendo la introducción de datos por parte del
usuario. Este control sirve para mostrar mensajes en
nuestro formulario que orienten al usuario sobre la
utilidad de los demás controles que tengamos en la
aplicación o para indicarnos acciones que podemos
realizar. Sus propiedades son las comunes a los demás
controles, aunque podemos mencionar aquí la propiedad
AutoSize: Hace
que el tamaño de la etiqueta se ajuste automáticamente a
la longitud del texto que contiene.
Para este control no
se suelen utilizar los eventos ya que su contenido suele
cambiar poco a lo largo de la ejecución de la
aplicación. A este control no se le puede dar el enfoque
(al pulsar la tecla tabulador nunca nos podremos colocar
sobre este control).
Antes de seguir
comentando otros controles, podemos ver en la figura
siguiente algunos de ellos.
CommandButton
Este control es el
típico botón que aparece en todas las aplicaciones y que
al hacer click sobre él nos permite realizar alguna
operación concreta. Según el código que le asociemos
podremos realizar las operaciones que queramos. El
evento por excelencia de este control es click. Sus
propiedades son:
Cancel: si
esta propiedad tiene el valor True quiere
decir que se trata del botón de cancelación. Ello
implica que al pulsar la tecla Escape se ejecutará el
código asociado al evento click de
dicho botón, independientemente de donde se encuentre el
foco en ese momento.
Default: si
esta propiedad tiene el valor True quiere
decir que se trata del botón por defecto. Ello implica
que al pulsar la tecla Intro se ejecutará el código
asociado al evento click de
dicho botón, independientemente de donde se encuentre el
foco en ese momento.
Picture: Podemos
escoger una imagen que aparecerá sobre el botón.
DisablePicture: es
la imagen que se mostrará en el botón cuando éste se
encuentre deshabilitado, es decir, cuando su propiedad Enabled sea False.
DownPicture: imagen
que mostrará el botón cuando esté pulsado.
NOTA: Para poder
utilizar las tres propiedades anteriores es necesario
que la propiedad Style esté en el valor Graphical;
en caso contrario el botón no podrá contener dibujos.
Style: Esta
propiedad puede tomar dos valores: Standard o Graphical.
Value: dando
a esta propiedad desde el código del programa el valor True,
se generará el evento Click.
Por lo tanto se trata de una forma de activar el botón
desde el código, igual que si se hubiese pulsado el
ratón o el teclado.
CheckBox
El control CheckBox es
una casilla de verificación en la que únicamente cabe la
posibilidad de que se encuentre marcada o desmarcada. Su
principal propiedad es:
Value: el
valor será Checked cuando
la casilla de verificación se encuentre marcada y Unchecked cuando
esté desmarcada.
OptionButton
Este control nos
permite elegir una opción entre varias de las que se nos
plantean. Cada opción será un control OptionButton
diferente. Observa la figura del ejemplo de más abajo.
De todas las opciones que se nos ofrece, sólo podremos
activar una. Si activamos cualquier otra opción, se
desactivará automáticamente la última que teníamos
activada.
El marco que está
alrededor de los 6 controles OptionButton se trata del
control Frame ,
es opcional, aunque es conveniente colocarlo siempre que
hagamos uso de las opciones. No sólo por motivos de
presentación sino porque de esta manera podremos
establecer grupos de controles OptionButton
independientes en los que en cada grupo sólo pueda haber
una opción activada a la vez. También, al mover el marco
se moverán los controles incluidos en él facilitándonos
las modificaciones.
Para que los
controles OptionButton queden
englobados dentro de un control Frame,
primero tendremos que colocar el control Frame en
el formulario con el tamaño adecuado y después ir
colocando los controles Optionbutton dentro
del Frame. Del
control Frame la única propiedad que
nos interesará es Caption, que es el texto que aparecerá
en el encabezado.
La propiedad más
importante del control OptionButton es
Value: Es
el valor que tendrá el control: True si
se encuentra activado y False si
no lo está.
No se suele asociar código a los eventos de este tipo de
controles, sino únicamente conocer el valor que tienen: True o False.
EJEMPLO
Para
practicar vamos a realizar una aplicación que consistirá
en realizar con 2 números que introduzcamos, una
operación que seleccionemos y mostrar el resultado. El
formulario donde estarán todos los controles es el que
aparece en la figura adjunta.
La propiedad Caption de
cada uno de los controles es la que se muestra en el
formulario.
Se ha modificado la
propiedad Name de
cada control para que al utilizarlos desde el código
sepamos cual es el control con el que trabajamos:
-
Los controles TextBox tienen
los nombres: Num1, Num2 y Resul.
-
Los controles Optionbutton tienen
cada uno de ellos el mismo nombre que su caption
-
Los controles CommandButton tienen
los nombres: Calcular, Limpiar y Salir.
-
A los controles Label y
al Frame no
hace falta cambiarles el nombre.
Lo que habrá que hacer ahora es asociar código a cada
uno de los botones que es de donde se van a realizar las
operaciones:
Private Sub Calcular_Click()
Dim r,
a, b As
Double
a = Num1.Text
b = Num2.Text
r = 0
If suma.Value
= True
Then
r = a + b
ElseIf resta.Value
= True
Then
r = a – b
ElseIf producto.Value
= True
Then
r = a * b
ElseIf division.Value
= True
Then
r = a / b
ElseIf potencia.Value
= True
Then
r = a ^ b
End If
Resul.Text = r
End Sub
· El
botón Limpiar Datos nos
va a servir para borrar los datos introducidos por el
usuario y el resultado preparando. El código que
tendremos que introducir es el siguiente:
Private Sub Limpiar_Click()
Num1.Text = “”
Num2.Text = “”
Resul.Text = “”
End Sub
· El
botón Salir únicamente
contendrá la sentencia End.
Private Sub Salir_Click()
End
End Sub
Nota:
el comando End hace que un programa finalice.
Image
Este control lo
utilizaremos cuando necesitemos visualizar una imagen en
nuestro programa. Para ello haremos uso de las dos
propiedades siguientes:
Picture: determina
la imagen que se debe mostrar en el control. Esta
propiedad contendrá la dirección del archivo donde está
almacenada la imagen. Si la imagen ha de cargarse en
tiempo de ejecución, habrá que hacer uso de la función LoadPicture de
la siguiente forma:
Image1.Picture = LoadPicture("c:\mis
documentos\dibujo.bmp")
Stretch: si
esta propiedad está establecida a False,
el control se redimensionará al cargar la imagen,
adaptándose al tamaño de esta. Si el valor es True,
será la imagen la que se adapte al tamaño del control.
PictureBox
El control cuadro de imagen es como un control Image
ampliado; además de poder visualizar imágenes nos
permite dibujar puntos, líneas, rectángulos, círculos,
etc... Dentro de él pueden colocarse incluso otro tipo
de controles. Las propiedades más importantes son:
Picture: determina
la imagen que se debe mostrar en el control.
AutoSize: automatiza
el tamaño del control a la imagen, es decir, aquel se
ajustará al tamaño de la imagen que ha de contener.
FillColor:
Color que se utilizará como relleno cuando se dibujen
formas en el formulario utilizando los métodos Line o
Circle.
FillStyle:
Tipo de relleno que se dará a las formas que se dibujen
en el formulario utilizando los métodos Line o Circle.
Existen una serie de métodos que nos van a permitir
realizar determinados dibujos dentro de un PictureBox.
Son los siguientes:
Pset (x,
y), color Dibuja un punto en la posición dada por
las coordenadas X e Y. El color vendrá dado por el valor
de la variable color.
Line (x,
y) - (z, w), color Dibuja una línea entre los
puntos (X, Y) y (Z, W) con el color especificado.
Line (x,
y) - (z, w), color, B Dibuja un rectángulo
cuyas esquinas superior izquierda e inferior derecha
serán respectivamente los puntos de coordenadas (X, Y) y
(Z, W). El color del borde está dado por el valor de
color.
Circle (x,
y), radio, color Dibuja un círculo con centro el
punto (X, Y).
Cls Borra
el contenido del PictureBox.
Todos los métodos
anteriores funcionan igualmente sobre el formulario. Si
queremos que los dibujos se realicen sobre un PictureBox
tendremos que anteponer el nombre de este antes de todos
los métodos, separados por un punto.
En aquellos en los que
sea posible, el tipo de relleno y el color del mismo
estarán determinados por los atributos establecidos en FillStyle y
en FillColor.
El estilo de las líneas (continuas, discontinuas) y su
grosor se establecen mediante las propiedades DrawWidth y DrawStyle.
El siguiente ejemplo
hace uso de uno de estos métodos.
Private Sub Form_MouseMove(Button As
Integer, Shift As
Integer, _
X As
Single, Y As Single)
If Button = 1 Then
PSet (X, Y), vbBlue
Endi if
End Sub
El ejemplo anterior
irá pintando de color azul aquellos puntos por los que
vaya pasando el ratón, siempre que tengamos pulsado el
botón primario del mismo. Esto es así porque la
condición If hace que el método Pset sólo se ejecute si
la variable Button (variable que determina que botón del
ratón está pulsado en cada momento) vale 1. El valor de
Button será 0 si no se encuentra pulsado ningún botón, 1
si el botón pulsado es el primario y 2 si es el
secundario.
Line y Shape
Estos dos controles
son de los más simples que podemos encontrar en Visual
Basic. Se utilizan para dibujar líneas el primero de
ellos y para dibujar distintas figuras o polígonos el
segundo. Son controles estáticos, pues no pueden
responder a ningún tipo de evento. Las propiedades
características a ambos controles son:
BorderColor: color
de la línea o color del borde que delimita la figura.
BorderStyle: estilo
de la línea o del borde: continuo, discontinuo, etc...
BorderWidth: anchura
de la línea o del borde de la figura.
Además de estas, hay
otras propiedades características de cada control. Las
propias del control Line son:
X1, X2,
Y1, Y2: Estas
cuatro coordenadas determinan los puntos origen y final
de la línea. Recordar que en informática el origen de
coordenadas se corresponde con la esquina superior
izquierda.
El control Shape tiene
estas propiedades características:
FillColor: color
de relleno de la figura.
FillStyle: el
valor de esta propiedad determinará el tipo de relleno
que tendrá la figura. Este puede ser sólido,
transparente, con líneas horizontales, verticales, ...
Conviene recordar ahora que habíamos dicho que existían
dos propiedades comunes a todos los controles que eran
BackColor y BackStyle, y que tenían una función
semejante a la que estamos describiendo para FillColor y
FillStyle. Si en un Shape tenemos activadas las dos
opciones, el color que prevalecerá como color de relleno
será el que esté indicado en la propiedad FillColor.
Shape: propiedad
cuyo valor sirve para especificar que figura se
dibujará. Los valores posibles son 0 (rectángulo), 1
(cuadrado), 2 (óvalo), 3 (círculo), 4 (rectángulo
redondeado) y 5 (cuadrado redondeado).
ComboBox
Este control es una lista desplegable donde el usuario
puede seleccionar una de las posibles opciones que
aparecen cuando desplegamos la persiana.
El control ComboBox posee dos listas, una visible, que
es la que se despliega, y otra no visible. La
información de la lista visible se guarda en la
propiedad List.
El primer elemento de la lista está almacenado en la
propiedad List(0), el segundo elemento en List(1) y así
sucesivamente. El primer elemento de la lista tiene el
subíndice 0. La propiedad ListCount contiene
el número de elementos que existen en la lista
desplegable. El último elemento de la lista tiene el
subíndice ListCount – 1.
Como dijimos este control posee una lista adicional no
visible. Los elementos de esta lista no visible se
almacenan en la propiedad ItemData;
ItemData(0) para el primero, ItemData(1) el segundo,
etc. Esta propiedad solo admite números enteros.
Cuando hacemos clic sobre una de las opciones de la
lista, se muestra en la ventana de control. La
propiedad Text almacena
el contenido de esa ventana; es decir, Text guarda la
misma información que la propiedad List(n), donde n es
el subíndice del elemento seleccionado. La propiedad ListIndex contiene
el subíndice del elemento seleccionado, o sea n. Cuando
la ventana superior de la persiana no contiene nada, la
propiedad Text está vacia y ListIndex alamacena –1.
Si necesitamos que además la aplicación haga algo al
seleccionar una opción de la lista, podemos programar el
evento Click del control.
El método AddItem inserta un nuevo elemento en la lista.
La propiedad NewIndex contiene
el índice del último elemento que hemos insertado.
Como propiedades características de este elemento de
control podemos destacar:
List: Podemos añadir
los Items de la lista no en el momento de ejecución del
programa, sino en el momento de su creación. Para ello
accedemos a esta propiedad y vamos escribiendo los
distintos elementos que queremos que salgan al desplegar
la lista. Una vez escrito el primero de ellos, para
seguir añadiendo elementos debemos pulsar Ctrl+Intro.
Sorted: permite
especificar si los elementos de la lista aparecerán
ordenados alfabéticamente.
Style: existen
tres posibles estilos para el ComboBox:
0
(Dropdown Combo) Este estilo hace que el texto del
ComboBox pueda seleccionarse de la lista o bien
escribirse directamente sobre el mismo.
1
(Simple Combo) No aparece la flecha que nos
permite desplegar la lista, por lo que no podremos
escoger los elementos de la misma. Simplemente se nos
permitirá escribir directamente sobre el control como si
se tratase de un control TextBox.
2
(Dropdown List) No es posible escribir
directamente sobre el control; únicamente pueden
escogerse los elementos de su lista.
Timer
Este control funciona
de forma distinta a los demás pues no aparece en el
formulario durante la ejecución del programa; sólo lo
veremos en el proceso de diseño. Se utilizará cuando
queramos que una o varias sentencias se ejecuten de
forma repetida a lo largo del desarrollo del programa.
La propiedad característica de este control es Interval.
Esta contendrá el valor, en milisegundos, que especifica
cada cuanto tiempo deben ejecutarse las sentencias
incluidas en el código asociado al control. Para detener
la ejecución del código asociado al control bastará con
establecer el valor de la propiedad Interval a 0. Por
ejemplo, si queremos que un programa emita un pitido
cada segundo deberemos escribir el siguiente código
Private Sub tmrTemporizador_Timer()
Beep
End Sub
además de tener la
propiedad Interval del temporizador establecida en 1000.
HScrollBar y VscrollBar
Son las típicas
barras de desplazamiento horizontal y vertical que
aparecen en multitud de programas. Las propiedades a
destacar de estas barras son:
Value: valor
que indica la posición en la que se encuentra el
indicador de desplazamiento de la barra. Este valor
estará comprendido entre los valores Max y Min.
Max: valor
máximo que podrá tomar la propiedad Value.
Min: valor
mínimo que podrá tomar la propiedad Value.
SmallChange: esta
propiedad indica cuantas unidades cambiará Value al
hacer click en una de las flechas de los extremos de la
barra de desplazamiento.
LargeChange: número
de unidades que cambiará el valor de Value al
hacer click dentro de la barra de desplazamiento.
Los eventos son
acciones que se pueden realizar en cualquier control:
click, doble click, movimiento del ratón,… A estos
eventos se les puede asociar código para que se ejecute
al producir el evento. Los eventos más habituales son:
MouseMove:
al mover el ratón por encima del control.
MouseDown: al
pulsar cualquier botón del ratón.
MouseUp: al
soltar cualquier botón del ratón.
Los tres eventos
anteriores poseen los cuatro parámetros siguientes:
Button, Shift, X e Y. Cada uno de ellos toma los
siguientes valores:
Button: toma
el valor 0 si no se aprieta ningún botón del ratón, el
valor 1 si el botón que se aprieta es el primario, el
valor 2 si el botón pulsado es el secundario y 4 si se
pulsa el botón central del ratón.
Shift: nos
indica si al pulsar el ratón teníamos pulsada alguna de
las teclas Shift,
Ctrl, Alt o AltGr.
Sus posibles valores son los siguientes:
0 si no está pulsada ninguna de estas teclas,
1 está pulsada la tecla Shift,
2 está pulsada la tecla Ctrl,
4 pulsada
la tecla Alt,
6 pulsada la tecla AltGr.
X e Y: guardan
el valor de las coordenadas X e Y en las que se
encontraba el puntero del ratón en el momento de
producirse el evento.
Veamos un ejemplo
del uso de uno de estos controles:
Private Sub Form_MouseDown(Button As
Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Print "Has pulsado el botón primario en
la posición " & X & ", " & Y
ElseIf Button = 2 Then
Print "Has pulsado el botón secundario en
la posición " & X & ", "& Y
Else
Print "Has pulsado el botón central en la
posición " & X & ", " & Y
End
If
End Sub
Si pulsamos uno de los
botones del ratón, el programa imprimirá en pantalla
cual de ellos era y la posición en la que lo hemos
hecho.
Change: al
cambiar el contenido del control, por ejemplo al
escribir algo en un TextBox.
Click: al
hacer click con el botón izquierdo del ratón sobre el
control.
DblClick: al
hacer doble click con el con el botón izquierdo del
ratón sobre el control.
KeyDown: al
presionar una tecla en el teclado. Este evento tiene dos
parámetros: KeyCode,
que se corresponde con un código numérico que dependerá
de la tecla pulsada, y Shift ,
que valdrá 1 o 0 dependiendo respectivamente de si se
encuentra pulsada o no la tecla Shift.
Private Sub Form_KeyDown(KeyCode As
Integer, Shift As Integer)
Print KeyCode, Shift
End Sub
KeyUp: semejante
al anterior, salvo que este evento se genera al soltar
la tecla que teníamos presionada.
KeyPress: al
pulsar una tecla del teclado y mantenerla pulsada. Es un
evento parecido a KeyDown, aunque dispone de un
solo parámetro, KeyAscii.
Este parámetro es particular de cada carácter, y es un
número entre 0 y 255 que nos informa del carácter
pulsado. (Aunque parezca igual que el parámetro KeyCode del
evento KeyDown, no son lo mismo. KeyAscii diferencia
entre pulsar “a” o pulsar “A”, mientras que KeyCode no).
El siguiente ejemplo imprime el carácter pulsado.
Private Sub Form_KeyPress(KeyAscii As
Integer)
Print Chr(KeyAscii)
End Sub
Gotfocus: este
evento se activa cuando el control recibe el enfoque, es
decir, cuando se activa el control en tiempo de
ejecución para introducir datos en él o realizar alguna
operación.
Lostfocus: Es
el contrario del anterior evento, se activa cuando el
control pierde el enfoque, es decir, se pasa a otro
control para seguir introduciendo datos.